package org.sendvox.freswitch.event;

import java.util.HashMap;
import java.util.Map;

import org.sendvox.freswitch.event.impl.ChannelMessage;

public class ChannelDataMessage extends ChannelMessage {

	private static final long serialVersionUID = 4449216396320350463L;

	private static final Event eventName = Event.CHANNEL_DATA;

	private String channelDirection;
	private String channelDialplan;
	private String channelCallerIDName;
	private String channelCallerIDNumber;
	private String channelNetworkAddr;
	private String channelDestinationNumber;
	private String channelUniqueID;
	private String channelSource;
	private String channelContext;
	private String channelChannelName;
	private Integer channelProfileIndex;
	private String channelProfileCreatedTime;
	private String channelChannelCreatedTime;
	private String channelChannelAnsweredTime;
	private String channelChannelProgressTime;
	private String channelChannelProgressMediaTime;
	private String channelChannelHangupTime;
	private String channelChannelTransferTime;
	private boolean channelScreenBit;
	private boolean channelPrivacyHideName;
	private boolean channelPrivacyHideNumber;

	final Map<String, String> variables;

	public ChannelDataMessage() {
		this.variables = new HashMap<String, String>();
	}

	@Override
	public Object getThis() {
		return this;
	}

	@Override
	public Event getEventName() {
		return eventName;
	}

	/**
	 * @return the variables
	 */
	public Map<String, String> getVariables() {
		return variables;
	}

	/**
	 * @return the channelDirection
	 */
	public String getChannelDirection() {
		return channelDirection;
	}

	/**
	 * @param channelDirection
	 *            the channelDirection to set
	 */
	public void setChannelDirection(String channelDirection) {
		this.channelDirection = channelDirection;
	}

	/**
	 * @return the channelDialplan
	 */
	public String getChannelDialplan() {
		return channelDialplan;
	}

	/**
	 * @param channelDialplan
	 *            the channelDialplan to set
	 */
	public void setChannelDialplan(String channelDialplan) {
		this.channelDialplan = channelDialplan;
	}

	/**
	 * @return the channelCallerIDName
	 */
	public String getChannelCallerIDName() {
		return channelCallerIDName;
	}

	/**
	 * @param channelCallerIDName
	 *            the channelCallerIDName to set
	 */
	public void setChannelCallerIDName(String channelCallerIDName) {
		this.channelCallerIDName = channelCallerIDName;
	}

	/**
	 * @return the channelCallerIDNumber
	 */
	public String getChannelCallerIDNumber() {
		return channelCallerIDNumber;
	}

	/**
	 * @param channelCallerIDNumber
	 *            the channelCallerIDNumber to set
	 */
	public void setChannelCallerIDNumber(String channelCallerIDNumber) {
		this.channelCallerIDNumber = channelCallerIDNumber;
	}

	/**
	 * @return the channelNetworkAddr
	 */
	public String getChannelNetworkAddr() {
		return channelNetworkAddr;
	}

	/**
	 * @param channelNetworkAddr
	 *            the channelNetworkAddr to set
	 */
	public void setChannelNetworkAddr(String channelNetworkAddr) {
		this.channelNetworkAddr = channelNetworkAddr;
	}

	/**
	 * @return the channelDestinationNumber
	 */
	public String getChannelDestinationNumber() {
		return channelDestinationNumber;
	}

	/**
	 * @param channelDestinationNumber
	 *            the channelDestinationNumber to set
	 */
	public void setChannelDestinationNumber(String channelDestinationNumber) {
		this.channelDestinationNumber = channelDestinationNumber;
	}

	/**
	 * @return the channelUniqueID
	 */
	public String getChannelUniqueID() {
		return channelUniqueID;
	}

	/**
	 * @param channelUniqueID
	 *            the channelUniqueID to set
	 */
	public void setChannelUniqueID(String channelUniqueID) {
		this.channelUniqueID = channelUniqueID;
	}

	/**
	 * @return the channelSource
	 */
	public String getChannelSource() {
		return channelSource;
	}

	/**
	 * @param channelSource
	 *            the channelSource to set
	 */
	public void setChannelSource(String channelSource) {
		this.channelSource = channelSource;
	}

	/**
	 * @return the channelContext
	 */
	public String getChannelContext() {
		return channelContext;
	}

	/**
	 * @param channelContext
	 *            the channelContext to set
	 */
	public void setChannelContext(String channelContext) {
		this.channelContext = channelContext;
	}

	/**
	 * @return the channelChannelName
	 */
	public String getChannelChannelName() {
		return channelChannelName;
	}

	/**
	 * @param channelChannelName
	 *            the channelChannelName to set
	 */
	public void setChannelChannelName(String channelChannelName) {
		this.channelChannelName = channelChannelName;
	}

	/**
	 * @return the channelProfileIndex
	 */
	public Integer getChannelProfileIndex() {
		return channelProfileIndex;
	}

	/**
	 * @param channelProfileIndex
	 *            the channelProfileIndex to set
	 */
	public void setChannelProfileIndex(Integer channelProfileIndex) {
		this.channelProfileIndex = channelProfileIndex;
	}

	/**
	 * @return the channelProfileCreatedTime
	 */
	public String getChannelProfileCreatedTime() {
		return channelProfileCreatedTime;
	}

	/**
	 * @param channelProfileCreatedTime
	 *            the channelProfileCreatedTime to set
	 */
	public void setChannelProfileCreatedTime(String channelProfileCreatedTime) {
		this.channelProfileCreatedTime = channelProfileCreatedTime;
	}

	/**
	 * @return the channelChannelCreatedTime
	 */
	public String getChannelChannelCreatedTime() {
		return channelChannelCreatedTime;
	}

	/**
	 * @param channelChannelCreatedTime
	 *            the channelChannelCreatedTime to set
	 */
	public void setChannelChannelCreatedTime(String channelChannelCreatedTime) {
		this.channelChannelCreatedTime = channelChannelCreatedTime;
	}

	/**
	 * @return the channelChannelAnsweredTime
	 */
	public String getChannelChannelAnsweredTime() {
		return channelChannelAnsweredTime;
	}

	/**
	 * @param channelChannelAnsweredTime
	 *            the channelChannelAnsweredTime to set
	 */
	public void setChannelChannelAnsweredTime(String channelChannelAnsweredTime) {
		this.channelChannelAnsweredTime = channelChannelAnsweredTime;
	}

	/**
	 * @return the channelChannelProgressTime
	 */
	public String getChannelChannelProgressTime() {
		return channelChannelProgressTime;
	}

	/**
	 * @param channelChannelProgressTime
	 *            the channelChannelProgressTime to set
	 */
	public void setChannelChannelProgressTime(String channelChannelProgressTime) {
		this.channelChannelProgressTime = channelChannelProgressTime;
	}

	/**
	 * @return the channelChannelProgressMediaTime
	 */
	public String getChannelChannelProgressMediaTime() {
		return channelChannelProgressMediaTime;
	}

	/**
	 * @param channelChannelProgressMediaTime
	 *            the channelChannelProgressMediaTime to set
	 */
	public void setChannelChannelProgressMediaTime(
			String channelChannelProgressMediaTime) {
		this.channelChannelProgressMediaTime = channelChannelProgressMediaTime;
	}

	/**
	 * @return the channelChannelHangupTime
	 */
	public String getChannelChannelHangupTime() {
		return channelChannelHangupTime;
	}

	/**
	 * @param channelChannelHangupTime
	 *            the channelChannelHangupTime to set
	 */
	public void setChannelChannelHangupTime(String channelChannelHangupTime) {
		this.channelChannelHangupTime = channelChannelHangupTime;
	}

	/**
	 * @return the channelChannelTransferTime
	 */
	public String getChannelChannelTransferTime() {
		return channelChannelTransferTime;
	}

	/**
	 * @param channelChannelTransferTime
	 *            the channelChannelTransferTime to set
	 */
	public void setChannelChannelTransferTime(String channelChannelTransferTime) {
		this.channelChannelTransferTime = channelChannelTransferTime;
	}

	/**
	 * @return the channelScreenBit
	 */
	public boolean isChannelScreenBit() {
		return channelScreenBit;
	}

	/**
	 * @param channelScreenBit
	 *            the channelScreenBit to set
	 */
	public void setChannelScreenBit(boolean channelScreenBit) {
		this.channelScreenBit = channelScreenBit;
	}

	/**
	 * @return the channelPrivacyHideName
	 */
	public boolean isChannelPrivacyHideName() {
		return channelPrivacyHideName;
	}

	/**
	 * @param channelPrivacyHideName
	 *            the channelPrivacyHideName to set
	 */
	public void setChannelPrivacyHideName(boolean channelPrivacyHideName) {
		this.channelPrivacyHideName = channelPrivacyHideName;
	}

	/**
	 * @return the channelPrivacyHideNumber
	 */
	public boolean isChannelPrivacyHideNumber() {
		return channelPrivacyHideNumber;
	}

	/**
	 * @param channelPrivacyHideNumber
	 *            the channelPrivacyHideNumber to set
	 */
	public void setChannelPrivacyHideNumber(boolean channelPrivacyHideNumber) {
		this.channelPrivacyHideNumber = channelPrivacyHideNumber;
	}

	/**
	 * @return the eventname
	 */
	public static Event getEventname() {
		return eventName;
	}

}
